#!/bin/bash

# 盲盒订单关联表重命名脚本
# 用途：将 sh_blind_box_order 重命名为 sh_order_blind_box
# 使用方法: bash rename_blindbox_table.sh

# 颜色定义
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
NC='\033[0m' # No Color

echo "=========================================="
echo "盲盒订单关联表重命名工具"
echo "=========================================="
echo ""

# 配置（请修改为您的实际配置）
DB_USER="root"
DB_NAME="your_database"
OLD_TABLE="sh_blind_box_order"
NEW_TABLE="sh_order_blind_box"

echo -e "${YELLOW}配置信息:${NC}"
echo "  数据库用户: $DB_USER"
echo "  数据库名称: $DB_NAME"
echo "  旧表名: $OLD_TABLE"
echo "  新表名: $NEW_TABLE"
echo ""

# 询问是否继续
read -p "是否继续执行重命名操作? (y/n): " confirm
if [ "$confirm" != "y" ] && [ "$confirm" != "Y" ]; then
    echo -e "${RED}操作已取消${NC}"
    exit 0
fi

echo ""
echo -e "${YELLOW}步骤1: 检查旧表是否存在...${NC}"

TABLE_EXISTS=$(mysql -u $DB_USER -p -D $DB_NAME -se "SHOW TABLES LIKE '$OLD_TABLE';")

if [ -z "$TABLE_EXISTS" ]; then
    echo -e "${YELLOW}旧表 $OLD_TABLE 不存在，可能已经重命名或未创建${NC}"
    
    # 检查新表是否已存在
    NEW_TABLE_EXISTS=$(mysql -u $DB_USER -p -D $DB_NAME -se "SHOW TABLES LIKE '$NEW_TABLE';")
    
    if [ -n "$NEW_TABLE_EXISTS" ]; then
        echo -e "${GREEN}✓ 新表 $NEW_TABLE 已存在，无需操作${NC}"
        exit 0
    else
        echo -e "${YELLOW}新表也不存在，将创建新表...${NC}"
        
        # 创建新表
        mysql -u $DB_USER -p -D $DB_NAME < /www/wwwroot/sm_shop-tp6/sm_shop_tp8/sql/20251029_blind_box_order_table.sql
        
        if [ $? -eq 0 ]; then
            echo -e "${GREEN}✓ 新表创建成功${NC}"
        else
            echo -e "${RED}✗ 新表创建失败${NC}"
            exit 1
        fi
    fi
else
    echo -e "${GREEN}✓ 找到旧表 $OLD_TABLE${NC}"
    
    # 检查新表是否已存在
    NEW_TABLE_EXISTS=$(mysql -u $DB_USER -p -D $DB_NAME -se "SHOW TABLES LIKE '$NEW_TABLE';")
    
    if [ -n "$NEW_TABLE_EXISTS" ]; then
        echo -e "${RED}✗ 新表 $NEW_TABLE 已存在，无法重命名！${NC}"
        echo "  请手动处理表冲突"
        exit 1
    fi
    
    echo ""
    echo -e "${YELLOW}步骤2: 备份旧表数据...${NC}"
    
    BACKUP_FILE="backup_${OLD_TABLE}_$(date +%Y%m%d_%H%M%S).sql"
    mysqldump -u $DB_USER -p $DB_NAME $OLD_TABLE > $BACKUP_FILE
    
    if [ $? -eq 0 ]; then
        echo -e "${GREEN}✓ 备份完成: $BACKUP_FILE${NC}"
    else
        echo -e "${RED}✗ 备份失败${NC}"
        exit 1
    fi
    
    echo ""
    echo -e "${YELLOW}步骤3: 执行表重命名...${NC}"
    
    mysql -u $DB_USER -p -D $DB_NAME -e "RENAME TABLE \`$OLD_TABLE\` TO \`$NEW_TABLE\`;"
    
    if [ $? -eq 0 ]; then
        echo -e "${GREEN}✓ 表重命名成功${NC}"
    else
        echo -e "${RED}✗ 表重命名失败${NC}"
        exit 1
    fi
fi

echo ""
echo -e "${YELLOW}步骤4: 验证新表...${NC}"

# 验证新表存在
VERIFY_NEW=$(mysql -u $DB_USER -p -D $DB_NAME -se "SHOW TABLES LIKE '$NEW_TABLE';")

if [ -n "$VERIFY_NEW" ]; then
    echo -e "${GREEN}✓ 新表 $NEW_TABLE 存在${NC}"
else
    echo -e "${RED}✗ 新表验证失败${NC}"
    exit 1
fi

# 验证旧表不存在
VERIFY_OLD=$(mysql -u $DB_USER -p -D $DB_NAME -se "SHOW TABLES LIKE '$OLD_TABLE';")

if [ -z "$VERIFY_OLD" ]; then
    echo -e "${GREEN}✓ 旧表 $OLD_TABLE 已不存在${NC}"
else
    echo -e "${YELLOW}⚠ 旧表仍然存在（可能未执行重命名）${NC}"
fi

# 显示表结构
echo ""
echo -e "${YELLOW}新表结构:${NC}"
mysql -u $DB_USER -p -D $DB_NAME -e "DESC $NEW_TABLE;"

echo ""
echo -e "${GREEN}=========================================="
echo "表重命名完成！"
echo "==========================================${NC}"
echo ""
echo "后续步骤:"
echo "1. 测试应用功能是否正常"
echo "2. 确认无误后可删除备份文件"
echo ""
echo "如需回滚，执行以下命令:"
echo "mysql -u $DB_USER -p $DB_NAME -e \"RENAME TABLE \\\`$NEW_TABLE\\\` TO \\\`$OLD_TABLE\\\`;\""
echo ""
